(function ($){
    var toDoList = {
        init: function (){// 初始化
            // this -> toDoList
            this.cacheElement() // 执行缓存元素的方法
            this.addEvent() // 执行添加事件的方法
        },
        cacheElement: function (){
            this.$ipt = $('.ipt')
            this.$add = $('.add')
            this.$todolist = $('.todolist')
            this.$all = $('.all')
            this.$done = $('.done')
            this.$removes = $('.removes')
            this.$donelist = $('.donelist')
        },
        addEvent: function (){
            var $this = this // toDoList
            // 添加任务
            this.$add.click(function (){
                var iptVal = $this.$ipt.val()//输入框的值
                if (!iptVal) {
                    alert('输入内容不能为空')
                    return false
                }
                var domStr = '<li><input type="checkbox" value=""><span class="con">'+iptVal+'</span><input type="text" class="repIpt"><span class="remove">删除</span><span class="edit">编辑</span></li>'
                $this.$todolist.append(domStr)
                $this.$ipt.val('')//清空输入的内容

                // 判断新增任务是否要勾选
                // if ($this.$all.prop('checked')) {
                //     $('.todolist input[type=checkbox]').prop('checked',true)
                // }

                // $('.todolist input[type=checkbox]').prop('checked',false)
                $this.$all.prop('checked',false)
            })
            // 编辑功能
            this.$todolist.on('click','.edit',function (){
                var task = $(this).siblings('.con').text()//当前任务的文本内容
                $(this).siblings('.con').hide()
                $(this).siblings('.repIpt').show()
                $(this).siblings('.repIpt').val(task).focus()
                // 完成编辑
                $(this).siblings('.repIpt').blur(function (){
                    var val = $(this).val()//当前输入框的值
                    $(this).hide()
                    $(this).siblings('.con').text(val).show()
                })
            })
            // 删除单个任务
            this.$todolist.on('click','.remove',function (){
                $(this).parent().remove()
                // 判断是否需要全选
                $('.todolist input[type=checkbox]').each(function (index,dom){
                    if (!$(dom).prop('checked')) {
                        $this.$all.prop('checked',false)
                        return false // 结束each
                    }
                    $this.$all.prop('checked',true)
                })
            })
            // 批量处理
            this.$done.click(function (){
                $('.todolist input:checked').each(function (index,dom){
                    var task = $(dom).siblings('.con').text()// 当前任务的文本
                    $(dom).parent().remove()
                    $this.$donelist.append('<li>'+task+'</li>')
                })

                $this.$all.prop('checked',false)
            })
            // 批量删除
            this.$removes.click(function (){
                $('.todolist input:checked').each(function (index,dom){
                    $(dom).parent().remove()
                })

                $this.$all.prop('checked',false)
            })
            // 点击全选
            this.$all.click(function (){
                if ($(this).prop('checked')) {
                    // 勾选了全选
                    $('.todolist input').prop('checked',true)
                } else {
                    // 去掉了全选
                    $('.todolist input').prop('checked',false)
                }
            })
            // 勾选单个任务
            this.$todolist.on('click','input[type=checkbox]',function (){
                $('.todolist input[type=checkbox]').each(function (index,dom){
                    if (!$(dom).prop('checked')) {
                        $this.$all.prop('checked',false)
                        return false // 结束each
                    }
                    $this.$all.prop('checked',true)
                })

            })
        }
    }
    toDoList.init()
})(jQuery)